const mongoose = require("mongoose");

// 参数模型
const ParamSchema = new mongoose.Schema({
  paramName: { type: String, required: true }, // 参数名
  paramType: { type: String, required: true }, // 参数类型
  isRequired: { type: Boolean, required: true }, // 是否必填
  paramExample: { type: String }, // 参数示例（代码片段）
  paramDesc: { type: String, required: true }, // 参数描述
});

// 枚举值模型
const EnumSchema = new mongoose.Schema({
  key: { type: String, required: true }, // 枚举键
  value: { type: String, required: true }, // 枚举值
  category: { type: String, required: true }, // 分类
  referenceImage: { type: String }, // 参考图
});

// SDK文档模型
const UeSdkSchema = new mongoose.Schema({
  sdkCategory: { type: String, required: true }, // SDK大类
  categoryName: { type: String, required: true }, // SDK大类名称
  method: { type: String, required: true }, // 方法
  methodName: { type: String, required: true }, // 方法名
  description: { type: String, required: true }, // 功能简介
  notes: { type: String }, // 注意事项
  callExample: { type: String }, // 调用示例（代码片段）
  returnExample: { type: String }, // 返回示例（代码片段）
  returnFormat: { type: String }, // 返回格式
  params: [ParamSchema], // 参数列表
  enums: [EnumSchema], // 枚举值列表
  fileTokens: { type: Array },
  createdAt: { type: Date, default: Date.now },
  updatedAt: { type: Date, default: Date.now },
});

// 更新时间中间件
UeSdkSchema.pre("save", function (next) {
  this.updatedAt = Date.now();
  next();
});

// 创建索引
UeSdkSchema.index({ sdkCategory: 1 });
UeSdkSchema.index({ method: 1 });

module.exports = mongoose.model("UeSdk", UeSdkSchema);
